﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VentaElectrodomesticos.Contrato;
using System.Data.SqlClient;

namespace VentaElectrodomesticos.Datos
{
    public class RolDAO : BaseDAO<Rol>
    {
        public override bool save(Rol rol)
        {
            List<SqlParameter> parameters = new List<SqlParameter>();

            if (rol.__funcionalidades.Count() > 0)
            {
                string funcionalidadesIds = "";
                foreach (Funcionalidad funcionalidad in rol.__funcionalidades)
                {
                    funcionalidadesIds += funcionalidad.Id.ToString() + ",";
                }
                funcionalidadesIds = funcionalidadesIds.Substring(0, funcionalidadesIds.Length - 1);
                parameters.Add(new SqlParameter("@funcionalidades_ids", funcionalidadesIds));
            }

            if (rol.Id > 0 ) {
                parameters.Add(new SqlParameter("@rol_id", rol.Id));
            }
            parameters.Add(new SqlParameter("@nombre", rol.nombre));
            parameters.Add(new SqlParameter("@inactivo", rol.inactivo));

            this.executeStoredProcedure(Config.tableSpace + "guardarRol", parameters);
            return true;
        }

        public List<Rol> getByUsuario(Usuario usuario)
        {
            Rol entity = new Rol();
            String sql = "Select * from " + Config.tableSpace + "rol r LEFT JOIN " + Config.tableSpace + "usuario_rol ur ON ur.rol_id = r.id WHERE ur.usuario_id = " + usuario.Id;
            SqlDataReader reader = this.getRows(sql);
            return makeObjects(ref entity, reader);
        }
    }
}
